package com.typhoon.spring_jdbctemplate.compare;

/**
 * 执行比较的接口
 * 
 * @author Typhoon
 * @date 2017-09-17 10:20 Sunday
 * @since V2.0
 * @param <S>
 * @param <T>
 */
public abstract  interface  IComparator<S,T> {
	
	  /**
	   * 执行比较操作
	   * 
	 * @param paramCompareContext
	 * @return
	 */
	public abstract CompareResult<T> compare(CompareContext paramCompareContext);

	  /**
	   * 获取默认的对比规则
	   * 
	 * @return
	 */
	public abstract CompareRule getDefaultRule();

	  /**
	   * 创建的时候执行一些初始化操作
	   * 
	 * @param paramS
	 * @return
	 */
	public abstract T onCreate(S paramS);

	  /**
	   * 更新的时候执行初始化操作
	   * 
	 * @param paramS
	 * @param paramT
	 */
	public abstract void onUpdate(S paramS, T paramT);

	  /**
	   * 删除的时候执行初始化操作
	   * 
	 * @param paramT
	 */
	public abstract void onDelete(T paramT);
}
